package com.hzdl.week01;

import java.util.Arrays;

/**
 * 5.求[101~200]之间的素数的个数，
 * 并将所有的素数存进数组，打印在控制台
 * (15分，考点：循环、数组、结构语句)
 * 素数：是指在大于1的自然数中，除了1和它本身以外不再有其他因数的自然数。
 */
public class Week01_05 {
    public static void main(String[] args) {
        //初始存放的数组
        int[] arr = new int[100];
        //定义下标位置
        int pos = 0;

        for (int i = 101; i < 201; i++) {
            //定义一个flag
            boolean flag = true;
            for (int j = 2; j < i; j++) {
                //逐个计算，直到增长到自身，若都没有找到能整除的，则为素数
                if (i % j == 0) {
                    flag = false;
//                    break;//找到一个就可以退出本次循环了
//                    arr[pos] = i;
//                    pos++;
                }

            }
            //注意位置别放错了，是在内层循环之外
            if (flag) {
                arr[pos] = i;
                pos++;
            }

        }
        //原来的数组会有剩下的空间为0，所以定义一个新数组来存放找出来的素数
        int[] newArr = Arrays.copyOf(arr, pos);
        System.out.println("素数数组：" + Arrays.toString(newArr));
        /*int [] arr = new int[100];
        int pos = 0;//要放入数组的下标

        for (int i = 100; i < 200; i++) {
            boolean flag = true;
            for (int j = 2; j < i; j++) {
                if (i%j==0) {
                    flag = false;
                }
            }
            //假设一直成立
            if (flag) {
                arr[pos] = i;
                pos++;
            }
        }
        int [] newArr = Arrays.copyOf(arr, pos);
        System.out.println("素数数组："+Arrays.toString(newArr));*/
    }

}
